using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._WorkflowManagerTools._Jobs
{
    /// <summary>
    /// <para>Get Job AOI</para>
    /// <para>Gets the job's location of interest (LOI)  as a feature layer. The output layer has either the polygon representing the area of interest (AOI) of the job or point representing the point of interest (POI) of the job.</para>
    /// <para>获取作业的感兴趣位置 （LOI） 作为要素图层。输出图层具有表示作业感兴趣区域 （AOI） 的面或表示作业的兴趣点 （POI） 的点。</para>
    /// </summary>    
    [DisplayName("Get Job AOI")]
    public class GetJobAOI : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GetJobAOI()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_Input_JobID">
        /// <para>Input Job ID</para>
        /// <para>The ID of the job whose AOI is to be retrieved.</para>
        /// <para>要检索其 AOI 的作业的 ID。</para>
        /// </param>
        /// <param name="_aoi_Layer">
        /// <para>AOI Layer</para>
        /// <para>The layer name for the location of interest retrieved. The output layer has either the polygon representing the area of interest (AOI) of the job or point representing the point of interest (POI) of the job.</para>
        /// <para>检索到的感兴趣位置的图层名称。输出图层具有表示作业感兴趣区域 （AOI） 的面或表示作业的兴趣点 （POI） 的点。</para>
        /// </param>
        public GetJobAOI(object _Input_JobID, object _aoi_Layer)
        {
            this._Input_JobID = _Input_JobID;
            this._aoi_Layer = _aoi_Layer;
        }
        public override string ToolboxName => "Workflow Manager Tools";

        public override string ToolName => "Get Job AOI";

        public override string CallName => "wmx.GetJobAOI";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_Input_JobID, _aoi_Layer, _Input_DatabasePath];

        /// <summary>
        /// <para>Input Job ID</para>
        /// <para>The ID of the job whose AOI is to be retrieved.</para>
        /// <para>要检索其 AOI 的作业的 ID。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Job ID")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Input_JobID { get; set; }


        /// <summary>
        /// <para>AOI Layer</para>
        /// <para>The layer name for the location of interest retrieved. The output layer has either the polygon representing the area of interest (AOI) of the job or point representing the point of interest (POI) of the job.</para>
        /// <para>检索到的感兴趣位置的图层名称。输出图层具有表示作业感兴趣区域 （AOI） 的面或表示作业的兴趣点 （POI） 的点。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("AOI Layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _aoi_Layer { get; set; }


        /// <summary>
        /// <para>Input Database Path</para>
        /// <para>The Workflow Manager (Classic) database connection file for the input job. If no connection file is specified, the current default Workflow Manager (Classic) database in the project is used.</para>
        /// <para>输入作业的 Workflow Manager （Classic） 数据库连接文件。如果未指定连接文件，则使用工程中的当前默认 Workflow Manager （Classic） 数据库。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Database Path")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _Input_DatabasePath { get; set; } = null;


        public GetJobAOI SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}